home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
basic
/
qbfaqr01.zip
/
VIDTYPE.BAS
< prev
next >
Wrap
BASIC Source File
|
1992-08-10
|
2KB
|
86 lines
' VidType.BAS - determines video adapter type and returns with an
' errorlevel to DOS
' (see function for values)
'
' by Brent Ashley - no copyright - do whatcha like withit
'
DECLARE SUB ExitLevel ALIAS "_exit" (BYVAL ErrLvl%)
DECLARE FUNCTION VidType% ()
DEFINT A-Z
'$INCLUDE: 'qb.bi'
PRINT : PRINT "This computer is equipped with ";
SELECT CASE VidType
CASE 1
PRINT "a Monochrome Text ";
CASE 2
PRINT "a Hercules ";
CASE 3
PRINT "a CGA ";
CASE 4
PRINT "an EGA ";
CASE 5
PRINT "a VGA ";
END SELECT
PRINT "adapter."
ExitLevel VidType
FUNCTION VidType%
' ** DETERMINE DISPLAY ADAPTER **
' This function returns the following values for the different
' display adapters:
'
' VGA: 5
' EGA: 4
' CGA: 3
' HGC: 2 (Hercules)
' MDA: 1
'
' Uses CALL Interrupt - set up Registers TYPEd variable
DIM Regs AS RegType
' force variables local
STATIC EgaInfo, InitialMode, i, Ticks
' If all else fails, it's the old MDA
VidType% = 1 ' MDA
' Check for VGA - INT 10h svc 1B will return 1B in AL if VGA
Regs.AX = &H1B00
CALL Interrupt(&H10, Regs, Regs)
IF ((Regs.AX AND &HFF) = &H1B) THEN
VidType% = 5 ' VGA
ELSE
' Check for EGA - EGA Info byte at 0000:0487 will have bits set
DEF SEG = 0
EgaInfo = PEEK(&H487)
DEF SEG
IF EgaInfo <> 0 THEN
VidType% = 4 ' EGA
ELSE
' Check for CGA - if initial display mode was not 80x25 MONO
CALL Interrupt(&H11, Regs, Regs) ' get equipment list
InitialMode = (Regs.AX MOD 256) AND &H30 ' mask vid bits
IF InitialMode <> &H30 THEN
VidType% = 3 ' CGA
ELSE
' Check for HGC - bit 7 of port 3BAh is 1 during vert retrace
' we loop through two timer-tick changes (> 1/18th sec)
' to give it enough time to set.
DEF SEG = 0
FOR i = 1 TO 2
Ticks = PEEK(&H46D) AND 1
DO WHILE Ticks = (PEEK(&H46D) AND 1)
IF INP(&H3BA) AND &H80 THEN
VidType% = 2 ' HGC
EXIT FOR
END IF ' hgc
LOOP
NEXT
DEF SEG
END IF ' cga
END IF ' ega
END IF ' vga
' done
END FUNCTION